home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Technology Seed 1996 September / Macintosh Technology Seed (September 1996) (CDRM1437020).ISO / pc / qd3d15d6 / 15d6_sdk.exe / QD3D Win32 1.5d6 / Interfaces / QD3DViewer.h < prev    next >
C/C++ Source or Header  |  1996-08-21  |  14KB  |  474 lines

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DViewer.h                                             **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:     Viewer Controller Interface File.                         **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **     Copyright (C) 1994-1996 Apple Computer, Inc.  All rights reserved.     **
  10.  **                                                                              **
  11.  **                                                                              **
  12.  *****************************************************************************/
  13. #ifndef QD3DViewer_h
  14. #define QD3DViewer_h
  15.  
  16. #include "QD3D.h"
  17. #include "QD3DGroup.h"
  18.  
  19. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  20.  
  21. #if defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  22.     #pragma options enum=small
  23. #endif
  24. #include <Events.h>
  25. #include <Types.h>
  26. #include <Windows.h>
  27. #if defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  28.     #pragma options enum=reset
  29. #endif
  30.  
  31. #if defined(THINK_C) || defined(__SC__)
  32.     #pragma options(!pack_enums, !align_arrays)
  33.     #pragma SC options align=power
  34. #elif defined(__MWERKS__)
  35.     #pragma enumsalwaysint on
  36.     #pragma align_array_members off
  37.     #pragma options align=native
  38. #elif defined(__PPCC__)
  39.     #pragma options align=power
  40. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  41.     #pragma options enum=int
  42. #endif
  43.  
  44. typedef void *TQ3ViewerObject;
  45.  
  46. typedef OSErr (*TQ3ViewerDrawingCallbackMethod)(
  47.         TQ3ViewerObject    theViewer,
  48.         const void *data);
  49.  
  50.  
  51. enum {
  52.     kQ3ViewerShowBadge             = 1<<0,
  53.     kQ3ViewerActive                = 1<<1,
  54.     kQ3ViewerControllerVisible    = 1<<2,
  55.     kQ3ViewerDrawFrame            = 1<<3,
  56.     kQ3ViewerDraggingOff        = 1<<4,
  57.     
  58.     kQ3ViewerButtonCamera        = 1<<5,
  59.     kQ3ViewerButtonTruck        = 1<<6,
  60.     kQ3ViewerButtonOrbit        = 1<<7,
  61.     kQ3ViewerButtonZoom            = 1<<8,
  62.     kQ3ViewerButtonDolly        = 1<<9,
  63.     kQ3ViewerButtonReset        = 1<<10,
  64.     
  65.     kQ3ViewerOutputTextMode        = 1<<11,
  66.     kQ3ViewerDragMode            = 1<<12,
  67.  
  68.     kQ3ViewerDrawGrowBox        = 1<<13,
  69.     kQ3ViewerDrawDragBorder        = 1<<14,
  70.  
  71.     kQ3ViewerDraggingInOff        = 1<<15,
  72.     kQ3ViewerDraggingOutOff        = 1<<16,
  73.  
  74.     kQ3ViewerDefault            = 1<<31
  75. };
  76.  
  77. enum {
  78.     kQ3ViewerEmpty    = 0,
  79.     kQ3ViewerHasModel = 1<<0,
  80.     kQ3ViewerHasUndo  = 1<<1
  81. };
  82.  
  83. typedef enum TQ3ViewerCameraView {
  84.     kQ3ViewerCameraRestore,
  85.     kQ3ViewerCameraFit,
  86.     kQ3ViewerCameraFront,
  87.     kQ3ViewerCameraBack,
  88.     kQ3ViewerCameraLeft,
  89.     kQ3ViewerCameraRight,
  90.     kQ3ViewerCameraTop,
  91.     kQ3ViewerCameraBottom
  92. } TQ3ViewerCameraView;
  93.  
  94. enum {
  95.     gestaltQD3DViewer            = 'q3vc',
  96.     gestaltQD3DViewerNotPresent    = 0,
  97.     gestaltQD3DViewerAvailable    = 1
  98. };
  99.  
  100. #ifdef __cplusplus
  101. extern "C" {
  102. #endif    /* __cplusplus */
  103.  
  104. /******************************************************************************
  105.  **                                                                             **
  106.  **        Return viewer version number                                         **
  107.  **                                                                             **
  108.  *****************************************************************************/
  109.  
  110. OSErr Q3ViewerGetVersion(
  111.     unsigned long        *majorRevision,
  112.     unsigned long        *minorRevision);
  113.  
  114.     
  115.     
  116. /******************************************************************************
  117.  **                                                                             **
  118.  **        Creation and destruction                                             **
  119.  **        Note that this is not a QuickDraw 3D object                             **
  120.  **                                                                             **
  121.  *****************************************************************************/
  122.  
  123. TQ3ViewerObject Q3ViewerNew(
  124.     CGrafPtr        port,
  125.     Rect            *rect,
  126.     unsigned long    flags);
  127.     
  128. OSErr Q3ViewerDispose(
  129.     TQ3ViewerObject theViewer);
  130.  
  131.  
  132. /******************************************************************************
  133.  **                                                                             **
  134.  **        Functions to attach data to a viewer                                 **
  135.  **                                                                             **
  136.  *****************************************************************************/
  137.  
  138. OSErr Q3ViewerUseFile(
  139.     TQ3ViewerObject    theViewer,
  140.     long            refNum);
  141.     
  142. OSErr Q3ViewerUseData(
  143.     TQ3ViewerObject    theViewer,
  144.     void            *data,
  145.     long            size);
  146.  
  147.  
  148. /******************************************************************************
  149.  **                                                                             **
  150.  **        Functions to write data out from the Viewer                             **
  151.  **                                                                             **
  152.  *****************************************************************************/
  153.  
  154. OSErr Q3ViewerWriteFile(
  155.     TQ3ViewerObject    theViewer,
  156.     long            refNum);
  157.     
  158. unsigned long Q3ViewerWriteData(
  159.     TQ3ViewerObject    theViewer,
  160.     void            **data);
  161.  
  162.  
  163. /******************************************************************************
  164.  **                                                                             **
  165.  **        Use this function to force the Viewer to re-draw                     **
  166.  **                                                                             **
  167.  *****************************************************************************/
  168.  
  169. OSErr Q3ViewerDraw(
  170.     TQ3ViewerObject theViewer);
  171.  
  172. OSErr Q3ViewerDrawContent(
  173.     TQ3ViewerObject theViewer);
  174.  
  175. OSErr Q3ViewerDrawControlStrip(
  176.     TQ3ViewerObject theViewer);
  177.  
  178.  
  179. /******************************************************************************
  180.  **                                                                             **
  181.  **        Function used by the Viewer to filter and handle events                 **
  182.  **                                                                             **
  183.  *****************************************************************************/
  184.  
  185. Boolean Q3ViewerEvent(
  186.     TQ3ViewerObject    theViewer,
  187.     EventRecord        *evt);
  188.  
  189.  
  190. /******************************************************************************
  191.  **                                                                             **
  192.  **        This function returns a PICT of the contents of the                  **
  193.  **        Viewer's window.  The application should dispose the PICT.             **
  194.  **                                                                             **
  195.  *****************************************************************************/
  196.  
  197. PicHandle Q3ViewerGetPict(
  198.     TQ3ViewerObject theViewer);
  199.  
  200.  
  201. /******************************************************************************
  202.  **                                                                             **
  203.  **        Calls for dealing with Buttons                                         **
  204.  **                                                                             **
  205.  *****************************************************************************/
  206.  
  207. OSErr Q3ViewerGetButtonRect(
  208.     TQ3ViewerObject    theViewer,
  209.     unsigned long    button,
  210.     Rect            *rect);
  211.  
  212. unsigned long Q3ViewerGetCurrentButton(
  213.     TQ3ViewerObject    theViewer);
  214.     
  215. OSErr Q3ViewerSetCurrentButton(
  216.     TQ3ViewerObject    theViewer,
  217.     unsigned long    button);
  218.  
  219.  
  220. /******************************************************************************
  221.  **                                                                             **
  222.  **        Functions to set/get the group to be displayed by the Viewer.         **
  223.  **                                                                             **
  224.  *****************************************************************************/
  225.  
  226. OSErr Q3ViewerUseGroup(
  227.     TQ3ViewerObject    theViewer,
  228.     TQ3GroupObject    group);
  229.     
  230. TQ3GroupObject Q3ViewerGetGroup(
  231.     TQ3ViewerObject    theViewer);
  232.  
  233.  
  234. /******************************************************************************
  235.  **                                                                             **
  236.  **        Functions to set/get the color used to clear the window                 **
  237.  **                                                                             **
  238.  *****************************************************************************/
  239.  
  240. OSErr Q3ViewerSetBackgroundColor(
  241.     TQ3ViewerObject    theViewer,
  242.     TQ3ColorARGB    *color);
  243.     
  244. OSErr Q3ViewerGetBackgroundColor(
  245.     TQ3ViewerObject    theViewer,
  246.     TQ3ColorARGB    *color);
  247.  
  248.  
  249. /******************************************************************************
  250.  **                                                                             **
  251.  **        Getting/Setting a Viewer's View object.                              **
  252.  **                                                                             **
  253.  *****************************************************************************/
  254.  
  255. TQ3ViewObject Q3ViewerGetView(
  256.     TQ3ViewerObject    theViewer);
  257.  
  258. OSErr Q3ViewerRestoreView(
  259.     TQ3ViewerObject    theViewer);
  260.  
  261.  
  262. /******************************************************************************
  263.  **                                                                             **
  264.  **        Calls for setting/getting viewer flags                                 **
  265.  **                                                                             **
  266.  *****************************************************************************/
  267.  
  268. OSErr Q3ViewerSetFlags(
  269.     TQ3ViewerObject    theViewer,
  270.     unsigned long    flags);
  271.     
  272. unsigned long Q3ViewerGetFlags(
  273.     TQ3ViewerObject    theViewer);
  274.  
  275.  
  276. /******************************************************************************
  277.  **                                                                             **
  278.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  279.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  280.  **        or the current dimensions of the window (if you do a Set).             **
  281.  **                                                                             **
  282.  *****************************************************************************/
  283.  
  284. OSErr Q3ViewerSetBounds(
  285.     TQ3ViewerObject    theViewer,
  286.     Rect            *bounds);
  287.     
  288. OSErr Q3ViewerGetBounds(
  289.     TQ3ViewerObject    theViewer,
  290.     Rect            *bounds);
  291.  
  292. OSErr Q3ViewerSetDimension(
  293.     TQ3ViewerObject    theViewer,
  294.     unsigned long    width,
  295.     unsigned long    height);
  296.  
  297. OSErr Q3ViewerGetDimension(
  298.     TQ3ViewerObject    theViewer,
  299.     unsigned long    *width,
  300.     unsigned long    *height);
  301.  
  302. /* 1.1 */
  303. OSErr Q3ViewerGetMininumDimension(
  304.     TQ3ViewerObject    theViewer,
  305.     unsigned long    *width,
  306.     unsigned long    *height);
  307.  
  308.  
  309. /******************************************************************************
  310.  **                                                                             **
  311.  **        Port related calls                                                     **
  312.  **                                                                             **
  313.  *****************************************************************************/
  314.  
  315. OSErr Q3ViewerSetPort(
  316.     TQ3ViewerObject    theViewer,
  317.     CGrafPtr        port);
  318.     
  319. CGrafPtr Q3ViewerGetPort(
  320.     TQ3ViewerObject    theViewer);
  321.  
  322.  
  323. /******************************************************************************
  324.  **                                                                             **
  325.  **        Adjust Cursor should be called from idle loop to allow the Viewer     **
  326.  **        to change the cursor according to the cursor position/object under     **
  327.  **        the cursor.                                                             **
  328.  **                                                                             **
  329.  *****************************************************************************/
  330.  
  331. Boolean Q3ViewerAdjustCursor(
  332.     TQ3ViewerObject    theViewer,
  333.     Point            *pt);
  334.  
  335. OSErr Q3ViewerCursorChanged(
  336.     TQ3ViewerObject    theViewer);
  337.  
  338.     
  339. /******************************************************************************
  340.  **                                                                             **
  341.  **        Returns the state of the viewer.  See the constant defined at the     **
  342.  **        top of this file.                                                     **
  343.  **                                                                             **
  344.  *****************************************************************************/
  345.  
  346. unsigned long Q3ViewerGetState(
  347.     TQ3ViewerObject    theViewer);
  348.  
  349.  
  350. /******************************************************************************
  351.  **                                                                             **
  352.  **        Clipboard utilities                                                     **
  353.  **                                                                             **
  354.  *****************************************************************************/
  355.  
  356. OSErr Q3ViewerClear(
  357.     TQ3ViewerObject    theViewer);
  358.     
  359. OSErr Q3ViewerCut(
  360.     TQ3ViewerObject    theViewer);
  361.     
  362. OSErr Q3ViewerCopy(
  363.     TQ3ViewerObject    theViewer);
  364.     
  365. OSErr Q3ViewerPaste(
  366.     TQ3ViewerObject    theViewer);
  367.  
  368.  
  369. /******************************************************************************
  370.  **                                                                             **
  371.  **        1.1                                                                     **
  372.  **        New Event Model                                                         **
  373.  **                                                                             **
  374.  *****************************************************************************/
  375.  
  376. Boolean Q3ViewerMouseDown(
  377.     TQ3ViewerObject    theViewer,
  378.     long                x,
  379.     long                y);
  380.  
  381. Boolean Q3ViewerContinueTracking(
  382.     TQ3ViewerObject    theViewer,
  383.     long                x,
  384.     long                y);
  385.  
  386. Boolean Q3ViewerMouseUp(
  387.     TQ3ViewerObject    theViewer,
  388.     long                x,
  389.     long                y);
  390.  
  391. Boolean Q3ViewerHandleKeyEvent(
  392.     TQ3ViewerObject        theViewer,
  393.     EventRecord            *evt);
  394.  
  395.  
  396. /******************************************************************************
  397.  **                                                                             **
  398.  **        1.1                                                                     **
  399.  **        Drawing CallBack                                                     **
  400.  **                                                                             **
  401.  *****************************************************************************/
  402.  
  403. OSErr Q3ViewerSetDrawingCallbackMethod(
  404.     TQ3ViewerObject                    theViewer,
  405.     TQ3ViewerDrawingCallbackMethod    callbackMethod,
  406.     const void                         *data);
  407.  
  408.  
  409. /******************************************************************************
  410.  **                                                                             **
  411.  **        1.1                                                                     **
  412.  **        Undo                                                                  **
  413.  **                                                                             **
  414.  *****************************************************************************/
  415.  
  416. OSErr Q3ViewerUndo(
  417.     TQ3ViewerObject    theViewer);
  418.         
  419. Boolean Q3ViewerGetUndoString(
  420.     TQ3ViewerObject    theViewer, 
  421.     char             *string,
  422.     unsigned long     *cnt);
  423.  
  424.  
  425. /******************************************************************************
  426.  **                                                                             **
  427.  **        1.1                                                                     **
  428.  **        New Camera Stuff                                                     **
  429.  **                                                                             **
  430.  *****************************************************************************/
  431.  
  432. OSErr Q3ViewerGetCameraCount(
  433.     TQ3ViewerObject    theViewer, 
  434.     unsigned long     *cnt);
  435.  
  436. OSErr Q3ViewerSetCameraByNumber(
  437.     TQ3ViewerObject    theViewer, 
  438.     unsigned long     cameraNo);
  439.  
  440. OSErr Q3ViewerSetCameraByView(
  441.     TQ3ViewerObject        theViewer, 
  442.     TQ3ViewerCameraView viewType);
  443.  
  444.  
  445. #if defined(ESCHER_VER_FUTURE) && ESCHER_VER_FUTURE
  446. /******************************************************************************
  447.  **                                                                             **
  448.  **        1.5                                                                     **
  449.  **        Animation Stuff                                                         **
  450.  **                                                                             **
  451.  *****************************************************************************/
  452.  
  453. OSErr Q3ViewerPlayAnimation(
  454.         TQ3ViewerObject theViewer, 
  455.         unsigned long     maxTime);
  456.         
  457. #endif /* ESCHER_VER_FUTURE */
  458.  
  459.  
  460. #ifdef __cplusplus
  461. }
  462. #endif    /* __cplusplus */
  463.  
  464. #if defined(__MWERKS__)
  465.     #pragma enumsalwaysint reset
  466. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  467.     #pragma options enum=reset
  468. #endif
  469.  
  470. #endif     /* OS_MACINTOSH */
  471.  
  472. #endif    /* QD3DViewer_h */
  473.  
  474.